import {Result, TableDataInfo} from "@/model";
import request from "@/utils/request";
import {AxiosPromise} from "axios";
import {UserForm, UserInfo, UserQuery, UserStatus} from "./types";
import {OnlineQuery} from "@/api/agree/types";

/**
 * 查看用户列表
 * @param params 查询条件
 * @returns 用户列表
 */
export function getUserList(params: UserQuery): AxiosPromise<TableDataInfo> {
    return request({
        url: "/admin/user/list",
        method: "get",
        params,
    });
}

/**
 * 获取用户信息
 * @returns 用户信息
 */
export function getUserInfo(): AxiosPromise<Result<UserInfo>> {
    return request({
        url: "/admin/user/getUserInfo",
        method: "get",
    });
}

/**
 * 修改用户
 * @param data 用户信息
 */
export function updateUser(data: UserForm): AxiosPromise<Result<null>> {
    return request({
        url: "/admin/user/update",
        method: "put",
        data,
    });
}

/**
 * 修改用户状态
 * @param data 用户状态
 */
export function updateUserStatus(data: UserStatus): AxiosPromise<Result<null>> {
    return request({
        url: "/admin/user/changeStatus",
        method: "put",
        data,
    });
}

/**
 * 查看在线用户列表
 * @param params 查询条件
 * @returns 在线用户列表
 */
export function getOnlineUserList(params: OnlineQuery): AxiosPromise<TableDataInfo> {
    return request({
        url: "/admin/onlineUser/list",
        method: "get",
        params,
    });
}

/**
 * 下线用户
 * @param token 在线token
 */
export function kickOutUser(token: string): AxiosPromise<Result<null>> {
    return request({
        url: `/admin/onlineUser/kick/${token}`,
        method: "get",
    });
}

/**
 * 重置用户密码
 * @param userId 用户id
 */
export function resetUserPassword(userId: number) {
    return request({
        url: `/admin/user/passwd/${userId}`,
        method: "put",
    });
}
